home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QD3DGeometry.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  53.8 KB  |  1,055 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DGeometry.p
  3.  
  4.      Contains:    Q3Geometry methods                                        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QD3DGeometry;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QD3DGEOMETRY__}
  27. {$SETC __QD3DGEOMETRY__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QD3DGeometryIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __QD3D__}
  34. {$I QD3D.p}
  35. {$ENDC}
  36.  
  37. {$IFC UNDEFINED __QD3DSET__}
  38. {$I QD3DSet.p}
  39. {$ENDC}
  40.  
  41.  
  42. {$PUSH}
  43. {$ALIGN POWER}
  44. {$LibExport+}
  45.  
  46. {*****************************************************************************
  47.  **                                                                             **
  48.  **                                Geometry Routines                             **
  49.  **                                                                             **
  50.  ****************************************************************************}
  51. FUNCTION Q3Geometry_GetType(geometry: TQ3GeometryObject): TQ3ObjectType; C;
  52. FUNCTION Q3Geometry_GetAttributeSet(geometry: TQ3GeometryObject; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  53. FUNCTION Q3Geometry_SetAttributeSet(geometry: TQ3GeometryObject; attributeSet: TQ3AttributeSet): TQ3Status; C;
  54. FUNCTION Q3Geometry_Submit(geometry: TQ3GeometryObject; view: TQ3ViewObject): TQ3Status; C;
  55.  
  56.  
  57. {*****************************************************************************
  58.  **                                                                             **
  59.  **                            Box    Data Structure Definitions                     **
  60.  **                                                                             **
  61.  ****************************************************************************}
  62.  
  63. TYPE
  64.     TQ3AttributeSetArray                = ARRAY [0..5] OF TQ3AttributeSet;
  65.     TQ3AttributeSetArrayPtr                = ^TQ3AttributeSetArray;
  66.     TQ3BoxDataPtr = ^TQ3BoxData;
  67.     TQ3BoxData = RECORD
  68.         origin:                    TQ3Point3D;
  69.         orientation:            TQ3Vector3D;
  70.         majorAxis:                TQ3Vector3D;
  71.         minorAxis:                TQ3Vector3D;
  72.         faceAttributeSet:        TQ3AttributeSetArrayPtr;                {  Ordering : Left, right,      }
  73.                                                                         {               front, back,      }
  74.                                                                         {               top, bottom     }
  75.         boxAttributeSet:        TQ3AttributeSet;
  76.     END;
  77.  
  78.  
  79. {*****************************************************************************
  80.  **                                                                             **
  81.  **                                Box Routines                                 **
  82.  **                                                                             **
  83.  ****************************************************************************}
  84. FUNCTION Q3Box_New({CONST}VAR boxData: TQ3BoxData): TQ3GeometryObject; C;
  85. FUNCTION Q3Box_Submit({CONST}VAR boxData: TQ3BoxData; view: TQ3ViewObject): TQ3Status; C;
  86. FUNCTION Q3Box_SetData(box: TQ3GeometryObject; {CONST}VAR boxData: TQ3BoxData): TQ3Status; C;
  87. FUNCTION Q3Box_GetData(box: TQ3GeometryObject; VAR boxData: TQ3BoxData): TQ3Status; C;
  88. FUNCTION Q3Box_EmptyData(VAR boxData: TQ3BoxData): TQ3Status; C;
  89. FUNCTION Q3Box_SetOrigin(box: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  90. FUNCTION Q3Box_SetOrientation(box: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  91. FUNCTION Q3Box_SetMajorAxis(box: TQ3GeometryObject; {CONST}VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  92. FUNCTION Q3Box_SetMinorAxis(box: TQ3GeometryObject; {CONST}VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  93. FUNCTION Q3Box_GetOrigin(box: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  94. FUNCTION Q3Box_GetOrientation(box: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  95. FUNCTION Q3Box_GetMajorAxis(box: TQ3GeometryObject; VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  96. FUNCTION Q3Box_GetMinorAxis(box: TQ3GeometryObject; VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  97. FUNCTION Q3Box_GetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: UInt32; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  98. FUNCTION Q3Box_SetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: UInt32; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  99.  
  100.  
  101. {*****************************************************************************
  102.  **                                                                             **
  103.  **                        Cone Data Structure Definitions                          **
  104.  **                                                                             **
  105.  ****************************************************************************}
  106.  
  107. TYPE
  108.     TQ3ConeDataPtr = ^TQ3ConeData;
  109.     TQ3ConeData = RECORD
  110.         origin:                    TQ3Point3D;
  111.         orientation:            TQ3Vector3D;
  112.         majorRadius:            TQ3Vector3D;
  113.         minorRadius:            TQ3Vector3D;
  114.         uMin:                    Single;
  115.         uMax:                    Single;
  116.         vMin:                    Single;
  117.         vMax:                    Single;
  118.         caps:                    TQ3EndCap;
  119.         interiorAttributeSet:    TQ3AttributeSet;
  120.         faceAttributeSet:        TQ3AttributeSet;
  121.         bottomAttributeSet:        TQ3AttributeSet;
  122.         coneAttributeSet:        TQ3AttributeSet;
  123.     END;
  124.  
  125. {*****************************************************************************
  126.  **                                                                             **
  127.  **                                Cone Routines                                 **
  128.  **                                                                             **
  129.  ****************************************************************************}
  130. FUNCTION Q3Cone_New({CONST}VAR coneData: TQ3ConeData): TQ3GeometryObject; C;
  131. FUNCTION Q3Cone_Submit({CONST}VAR coneData: TQ3ConeData; view: TQ3ViewObject): TQ3Status; C;
  132. FUNCTION Q3Cone_SetData(cone: TQ3GeometryObject; {CONST}VAR coneData: TQ3ConeData): TQ3Status; C;
  133. FUNCTION Q3Cone_GetData(cone: TQ3GeometryObject; VAR coneData: TQ3ConeData): TQ3Status; C;
  134. FUNCTION Q3Cone_SetOrigin(cone: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  135. FUNCTION Q3Cone_SetOrientation(cone: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  136. FUNCTION Q3Cone_SetMajorRadius(cone: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  137. FUNCTION Q3Cone_SetMinorRadius(cone: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  138. FUNCTION Q3Cone_GetOrigin(cone: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  139. FUNCTION Q3Cone_GetOrientation(cone: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  140. FUNCTION Q3Cone_GetMajorRadius(cone: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  141. FUNCTION Q3Cone_GetMinorRadius(cone: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  142. FUNCTION Q3Cone_SetCaps(cone: TQ3GeometryObject; caps: TQ3EndCap): TQ3Status; C;
  143. FUNCTION Q3Cone_GetCaps(cone: TQ3GeometryObject; VAR caps: TQ3EndCap): TQ3Status; C;
  144. FUNCTION Q3Cone_SetBottomAttributeSet(cone: TQ3GeometryObject; bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  145. FUNCTION Q3Cone_GetBottomAttributeSet(cone: TQ3GeometryObject; VAR bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  146. FUNCTION Q3Cone_SetFaceAttributeSet(cone: TQ3GeometryObject; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  147. FUNCTION Q3Cone_GetFaceAttributeSet(cone: TQ3GeometryObject; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  148. FUNCTION Q3Cone_EmptyData(VAR coneData: TQ3ConeData): TQ3Status; C;
  149.  
  150.  
  151.  
  152. {*****************************************************************************
  153.  **                                                                             **
  154.  **                        Cylinder Data Structure Definitions                     **
  155.  **                                                                             **
  156.  ****************************************************************************}
  157.  
  158. TYPE
  159.     TQ3CylinderDataPtr = ^TQ3CylinderData;
  160.     TQ3CylinderData = RECORD
  161.         origin:                    TQ3Point3D;
  162.         orientation:            TQ3Vector3D;
  163.         majorRadius:            TQ3Vector3D;
  164.         minorRadius:            TQ3Vector3D;
  165.         uMin:                    Single;
  166.         uMax:                    Single;
  167.         vMin:                    Single;
  168.         vMax:                    Single;
  169.         caps:                    TQ3EndCap;
  170.         interiorAttributeSet:    TQ3AttributeSet;
  171.         topAttributeSet:        TQ3AttributeSet;
  172.         faceAttributeSet:        TQ3AttributeSet;
  173.         bottomAttributeSet:        TQ3AttributeSet;
  174.         cylinderAttributeSet:    TQ3AttributeSet;
  175.     END;
  176.  
  177. {*****************************************************************************
  178.  **                                                                             **
  179.  **                            Cylinder Routines                                 **
  180.  **                                                                             **
  181.  ****************************************************************************}
  182. FUNCTION Q3Cylinder_New({CONST}VAR cylinderData: TQ3CylinderData): TQ3GeometryObject; C;
  183. FUNCTION Q3Cylinder_Submit({CONST}VAR cylinderData: TQ3CylinderData; view: TQ3ViewObject): TQ3Status; C;
  184. FUNCTION Q3Cylinder_SetData(cylinder: TQ3GeometryObject; {CONST}VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  185. FUNCTION Q3Cylinder_GetData(cylinder: TQ3GeometryObject; VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  186. FUNCTION Q3Cylinder_SetOrigin(cylinder: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  187. FUNCTION Q3Cylinder_SetOrientation(cylinder: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  188. FUNCTION Q3Cylinder_SetMajorRadius(cylinder: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  189. FUNCTION Q3Cylinder_SetMinorRadius(cylinder: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  190. FUNCTION Q3Cylinder_GetOrigin(cylinder: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  191. FUNCTION Q3Cylinder_GetOrientation(cylinder: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  192. FUNCTION Q3Cylinder_GetMajorRadius(cylinder: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  193. FUNCTION Q3Cylinder_GetMinorRadius(cylinder: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  194.  
  195. FUNCTION Q3Cylinder_SetCaps(cylinder: TQ3GeometryObject; caps: TQ3EndCap): TQ3Status; C;
  196. FUNCTION Q3Cylinder_GetCaps(cylinder: TQ3GeometryObject; VAR caps: TQ3EndCap): TQ3Status; C;
  197.  
  198. FUNCTION Q3Cylinder_SetTopAttributeSet(cylinder: TQ3GeometryObject; topAttributeSet: TQ3AttributeSet): TQ3Status; C;
  199. FUNCTION Q3Cylinder_GetTopAttributeSet(cylinder: TQ3GeometryObject; VAR topAttributeSet: TQ3AttributeSet): TQ3Status; C;
  200. FUNCTION Q3Cylinder_SetBottomAttributeSet(cylinder: TQ3GeometryObject; bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  201. FUNCTION Q3Cylinder_GetBottomAttributeSet(cylinder: TQ3GeometryObject; VAR bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  202. FUNCTION Q3Cylinder_SetFaceAttributeSet(cylinder: TQ3GeometryObject; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  203. FUNCTION Q3Cylinder_GetFaceAttributeSet(cylinder: TQ3GeometryObject; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  204. FUNCTION Q3Cylinder_EmptyData(VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  205.  
  206.  
  207.  
  208. {*****************************************************************************
  209.  **                                                                             **
  210.  **                        Disk Data Structure Definitions                         **
  211.  **                                                                             **
  212.  ****************************************************************************}
  213.  
  214. TYPE
  215.     TQ3DiskDataPtr = ^TQ3DiskData;
  216.     TQ3DiskData = RECORD
  217.         origin:                    TQ3Point3D;
  218.         majorRadius:            TQ3Vector3D;
  219.         minorRadius:            TQ3Vector3D;
  220.         uMin:                    Single;
  221.         uMax:                    Single;
  222.         vMin:                    Single;
  223.         vMax:                    Single;
  224.         diskAttributeSet:        TQ3AttributeSet;
  225.     END;
  226.  
  227. {*****************************************************************************
  228.  **                                                                             **
  229.  **                                Disk Routines                                  **
  230.  **                                                                             **
  231.  ****************************************************************************}
  232. FUNCTION Q3Disk_New({CONST}VAR diskData: TQ3DiskData): TQ3GeometryObject; C;
  233. FUNCTION Q3Disk_Submit({CONST}VAR diskData: TQ3DiskData; view: TQ3ViewObject): TQ3Status; C;
  234. FUNCTION Q3Disk_SetData(disk: TQ3GeometryObject; {CONST}VAR diskData: TQ3DiskData): TQ3Status; C;
  235. FUNCTION Q3Disk_GetData(disk: TQ3GeometryObject; VAR diskData: TQ3DiskData): TQ3Status; C;
  236. FUNCTION Q3Disk_SetOrigin(disk: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  237. FUNCTION Q3Disk_SetMajorRadius(disk: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  238. FUNCTION Q3Disk_SetMinorRadius(disk: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  239. FUNCTION Q3Disk_GetOrigin(disk: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  240. FUNCTION Q3Disk_GetMajorRadius(disk: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  241. FUNCTION Q3Disk_GetMinorRadius(disk: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  242.  
  243. FUNCTION Q3Disk_EmptyData(VAR diskData: TQ3DiskData): TQ3Status; C;
  244.  
  245.  
  246.  
  247. {*****************************************************************************
  248.  **                                                                             **
  249.  **                     Ellipse Data Structure Definitions                         **
  250.  **                                                                             **
  251.  ****************************************************************************}
  252.  
  253. TYPE
  254.     TQ3EllipseDataPtr = ^TQ3EllipseData;
  255.     TQ3EllipseData = RECORD
  256.         origin:                    TQ3Point3D;
  257.         majorRadius:            TQ3Vector3D;
  258.         minorRadius:            TQ3Vector3D;
  259.         uMin:                    Single;
  260.         uMax:                    Single;
  261.         ellipseAttributeSet:    TQ3AttributeSet;
  262.     END;
  263.  
  264. {*****************************************************************************
  265.  **                                                                             **
  266.  **                                Ellipse Routines                             **
  267.  **                                                                             **
  268.  ****************************************************************************}
  269. FUNCTION Q3Ellipse_New({CONST}VAR ellipseData: TQ3EllipseData): TQ3GeometryObject; C;
  270. FUNCTION Q3Ellipse_Submit({CONST}VAR ellipseData: TQ3EllipseData; view: TQ3ViewObject): TQ3Status; C;
  271. FUNCTION Q3Ellipse_SetData(ellipse: TQ3GeometryObject; {CONST}VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  272. FUNCTION Q3Ellipse_GetData(ellipse: TQ3GeometryObject; VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  273. FUNCTION Q3Ellipse_SetOrigin(ellipse: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  274. FUNCTION Q3Ellipse_SetMajorRadius(ellipse: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  275. FUNCTION Q3Ellipse_SetMinorRadius(ellipse: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  276. FUNCTION Q3Ellipse_GetOrigin(ellipse: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  277. FUNCTION Q3Ellipse_GetMajorRadius(ellipse: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  278. FUNCTION Q3Ellipse_GetMinorRadius(ellipse: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  279.  
  280. FUNCTION Q3Ellipse_EmptyData(VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  281.  
  282.  
  283.  
  284. {*****************************************************************************
  285.  **                                                                          **
  286.  **                            Ellipsoid Data structures                         **
  287.  **                                                                          **
  288.  ****************************************************************************}
  289.  
  290. TYPE
  291.     TQ3EllipsoidDataPtr = ^TQ3EllipsoidData;
  292.     TQ3EllipsoidData = RECORD
  293.         origin:                    TQ3Point3D;
  294.         orientation:            TQ3Vector3D;
  295.         majorRadius:            TQ3Vector3D;
  296.         minorRadius:            TQ3Vector3D;
  297.         uMin:                    Single;
  298.         uMax:                    Single;
  299.         vMin:                    Single;
  300.         vMax:                    Single;
  301.         caps:                    TQ3EndCap;
  302.         interiorAttributeSet:    TQ3AttributeSet;
  303.         ellipsoidAttributeSet:    TQ3AttributeSet;
  304.     END;
  305.  
  306. {*****************************************************************************
  307.  **                                                                          **
  308.  **                            Ellipsoid Routines                                **
  309.  **                                                                          **
  310.  ****************************************************************************}
  311. FUNCTION Q3Ellipsoid_New({CONST}VAR ellipsoidData: TQ3EllipsoidData): TQ3GeometryObject; C;
  312. FUNCTION Q3Ellipsoid_Submit({CONST}VAR ellipsoidData: TQ3EllipsoidData; view: TQ3ViewObject): TQ3Status; C;
  313. FUNCTION Q3Ellipsoid_SetData(ellipsoid: TQ3GeometryObject; {CONST}VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  314. FUNCTION Q3Ellipsoid_GetData(ellipsoid: TQ3GeometryObject; VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  315. FUNCTION Q3Ellipsoid_SetOrigin(ellipsoid: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  316. FUNCTION Q3Ellipsoid_SetOrientation(ellipsoid: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  317. FUNCTION Q3Ellipsoid_SetMajorRadius(ellipsoid: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  318. FUNCTION Q3Ellipsoid_SetMinorRadius(ellipsoid: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  319. FUNCTION Q3Ellipsoid_GetOrigin(ellipsoid: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  320. FUNCTION Q3Ellipsoid_GetOrientation(ellipsoid: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  321. FUNCTION Q3Ellipsoid_GetMajorRadius(ellipsoid: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  322. FUNCTION Q3Ellipsoid_GetMinorRadius(ellipsoid: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  323. FUNCTION Q3Ellipsoid_EmptyData(VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  324.  
  325.  
  326.  
  327. {*****************************************************************************
  328.  **                                                                             **
  329.  **                    General Polygon Data Structure Definitions                 **
  330.  **                                                                             **
  331.  ****************************************************************************}
  332.  
  333. TYPE
  334.     TQ3GeneralPolygonShapeHint     = LONGINT;
  335. CONST
  336.     kQ3GeneralPolygonShapeHintComplex = {TQ3GeneralPolygonShapeHint}0;
  337.     kQ3GeneralPolygonShapeHintConcave = {TQ3GeneralPolygonShapeHint}1;
  338.     kQ3GeneralPolygonShapeHintConvex = {TQ3GeneralPolygonShapeHint}2;
  339.  
  340.  
  341. TYPE
  342.     TQ3GeneralPolygonContourDataPtr = ^TQ3GeneralPolygonContourData;
  343.     TQ3GeneralPolygonContourData = RECORD
  344.         numVertices:            UInt32;
  345.         vertices:                TQ3Vertex3DPtr;
  346.     END;
  347.  
  348.     TQ3GeneralPolygonDataPtr = ^TQ3GeneralPolygonData;
  349.     TQ3GeneralPolygonData = RECORD
  350.         numContours:            UInt32;
  351.         contours:                TQ3GeneralPolygonContourDataPtr;
  352.         shapeHint:                TQ3GeneralPolygonShapeHint;
  353.         generalPolygonAttributeSet: TQ3AttributeSet;
  354.     END;
  355.  
  356. {*****************************************************************************
  357.  **                                                                             **
  358.  **                            General polygon Routines                         **
  359.  **                                                                             **
  360.  ****************************************************************************}
  361. FUNCTION Q3GeneralPolygon_New({CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3GeometryObject; C;
  362. FUNCTION Q3GeneralPolygon_Submit({CONST}VAR generalPolygonData: TQ3GeneralPolygonData; view: TQ3ViewObject): TQ3Status; C;
  363. FUNCTION Q3GeneralPolygon_SetData(generalPolygon: TQ3GeometryObject; {CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  364. FUNCTION Q3GeneralPolygon_GetData(polygon: TQ3GeometryObject; VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  365. FUNCTION Q3GeneralPolygon_EmptyData(VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  366. FUNCTION Q3GeneralPolygon_GetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  367. FUNCTION Q3GeneralPolygon_SetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  368. FUNCTION Q3GeneralPolygon_GetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  369. FUNCTION Q3GeneralPolygon_SetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  370. FUNCTION Q3GeneralPolygon_SetShapeHint(generalPolygon: TQ3GeometryObject; shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  371. FUNCTION Q3GeneralPolygon_GetShapeHint(generalPolygon: TQ3GeometryObject; VAR shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  372.  
  373.  
  374.  
  375. {*****************************************************************************
  376.  **                                                                             **
  377.  **                        Line Data Structure Definitions                         **
  378.  **                                                                             **
  379.  ****************************************************************************}
  380.  
  381. TYPE
  382.     TQ3LineDataPtr = ^TQ3LineData;
  383.     TQ3LineData = RECORD
  384.         vertices:                ARRAY [0..1] OF TQ3Vertex3D;
  385.         lineAttributeSet:        TQ3AttributeSet;
  386.     END;
  387.  
  388. {*****************************************************************************
  389.  **                                                                             **
  390.  **                            Line Routines                                     **
  391.  **                                                                             **
  392.  ****************************************************************************}
  393. FUNCTION Q3Line_New({CONST}VAR lineData: TQ3LineData): TQ3GeometryObject; C;
  394. FUNCTION Q3Line_Submit({CONST}VAR lineData: TQ3LineData; view: TQ3ViewObject): TQ3Status; C;
  395. FUNCTION Q3Line_GetData(line: TQ3GeometryObject; VAR lineData: TQ3LineData): TQ3Status; C;
  396. FUNCTION Q3Line_SetData(line: TQ3GeometryObject; {CONST}VAR lineData: TQ3LineData): TQ3Status; C;
  397. FUNCTION Q3Line_GetVertexPosition(line: TQ3GeometryObject; index: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  398. FUNCTION Q3Line_SetVertexPosition(line: TQ3GeometryObject; index: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  399. FUNCTION Q3Line_GetVertexAttributeSet(line: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  400. FUNCTION Q3Line_SetVertexAttributeSet(line: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  401. FUNCTION Q3Line_EmptyData(VAR lineData: TQ3LineData): TQ3Status; C;
  402.  
  403.  
  404.  
  405. {*****************************************************************************
  406.  **                                                                             **
  407.  **                        Marker Data Structure Definitions                     **
  408.  **                                                                             **
  409.  ****************************************************************************}
  410.  
  411. TYPE
  412.     TQ3MarkerDataPtr = ^TQ3MarkerData;
  413.     TQ3MarkerData = RECORD
  414.         location:                TQ3Point3D;
  415.         xOffset:                LONGINT;
  416.         yOffset:                LONGINT;
  417.         bitmap:                    TQ3Bitmap;
  418.         markerAttributeSet:        TQ3AttributeSet;
  419.     END;
  420.  
  421. {*****************************************************************************
  422.  **                                                                             **
  423.  **                                Marker Routines                                 **
  424.  **                                                                             **
  425.  ****************************************************************************}
  426. FUNCTION Q3Marker_New({CONST}VAR markerData: TQ3MarkerData): TQ3GeometryObject; C;
  427. FUNCTION Q3Marker_Submit({CONST}VAR markerData: TQ3MarkerData; view: TQ3ViewObject): TQ3Status; C;
  428. FUNCTION Q3Marker_SetData(geometry: TQ3GeometryObject; {CONST}VAR markerData: TQ3MarkerData): TQ3Status; C;
  429. FUNCTION Q3Marker_GetData(geometry: TQ3GeometryObject; VAR markerData: TQ3MarkerData): TQ3Status; C;
  430. FUNCTION Q3Marker_EmptyData(VAR markerData: TQ3MarkerData): TQ3Status; C;
  431. FUNCTION Q3Marker_GetPosition(marker: TQ3GeometryObject; VAR location: TQ3Point3D): TQ3Status; C;
  432. FUNCTION Q3Marker_SetPosition(marker: TQ3GeometryObject; {CONST}VAR location: TQ3Point3D): TQ3Status; C;
  433. FUNCTION Q3Marker_GetXOffset(marker: TQ3GeometryObject; VAR xOffset: LONGINT): TQ3Status; C;
  434. FUNCTION Q3Marker_SetXOffset(marker: TQ3GeometryObject; xOffset: LONGINT): TQ3Status; C;
  435. FUNCTION Q3Marker_GetYOffset(marker: TQ3GeometryObject; VAR yOffset: LONGINT): TQ3Status; C;
  436. FUNCTION Q3Marker_SetYOffset(marker: TQ3GeometryObject; yOffset: LONGINT): TQ3Status; C;
  437. FUNCTION Q3Marker_GetBitmap(marker: TQ3GeometryObject; VAR bitmap: TQ3Bitmap): TQ3Status; C;
  438. FUNCTION Q3Marker_SetBitmap(marker: TQ3GeometryObject; {CONST}VAR bitmap: TQ3Bitmap): TQ3Status; C;
  439.  
  440.  
  441.  
  442. {*****************************************************************************
  443.  **                                                                             **
  444.  **                        Mesh Data Structure Definitions                         **
  445.  **                                                                             **
  446.  ****************************************************************************}
  447.  
  448. TYPE
  449.     TQ3MeshComponent = ^LONGINT;
  450.     TQ3MeshVertex = ^LONGINT;
  451.     TQ3MeshFace = ^LONGINT;
  452.     TQ3MeshEdge = ^LONGINT;
  453.     TQ3MeshContour = ^LONGINT;
  454. {*****************************************************************************
  455.  **                                                                             **
  456.  **                            Mesh Routines                                      **
  457.  **                                                                             **
  458.  ****************************************************************************}
  459. {
  460.  *  Constructors
  461.  }
  462. FUNCTION Q3Mesh_New: TQ3GeometryObject; C;
  463. FUNCTION Q3Mesh_VertexNew(mesh: TQ3GeometryObject; {CONST}VAR vertex: TQ3Vertex3D): TQ3MeshVertex; C;
  464. FUNCTION Q3Mesh_FaceNew(mesh: TQ3GeometryObject; numVertices: UInt32; {CONST}VAR vertices: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3MeshFace; C;
  465. {
  466.  *  Destructors
  467.  }
  468. FUNCTION Q3Mesh_VertexDelete(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex): TQ3Status; C;
  469. FUNCTION Q3Mesh_FaceDelete(mesh: TQ3GeometryObject; face: TQ3MeshFace): TQ3Status; C;
  470. {
  471.  * Methods
  472.  }
  473. FUNCTION Q3Mesh_DelayUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  474. FUNCTION Q3Mesh_ResumeUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  475. FUNCTION Q3Mesh_FaceToContour(mesh: TQ3GeometryObject; containerFace: TQ3MeshFace; face: TQ3MeshFace): TQ3MeshContour; C;
  476. FUNCTION Q3Mesh_ContourToFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour): TQ3MeshFace; C;
  477. {
  478.  * Mesh
  479.  }
  480. FUNCTION Q3Mesh_GetNumComponents(mesh: TQ3GeometryObject; VAR numComponents: UInt32): TQ3Status; C;
  481. FUNCTION Q3Mesh_GetNumEdges(mesh: TQ3GeometryObject; VAR numEdges: UInt32): TQ3Status; C;
  482. FUNCTION Q3Mesh_GetNumVertices(mesh: TQ3GeometryObject; VAR numVertices: UInt32): TQ3Status; C;
  483. FUNCTION Q3Mesh_GetNumFaces(mesh: TQ3GeometryObject; VAR numFaces: UInt32): TQ3Status; C;
  484. FUNCTION Q3Mesh_GetNumCorners(mesh: TQ3GeometryObject; VAR numCorners: UInt32): TQ3Status; C;
  485. FUNCTION Q3Mesh_GetOrientable(mesh: TQ3GeometryObject; VAR orientable: TQ3Boolean): TQ3Status; C;
  486. {
  487.  * Component
  488.  }
  489. FUNCTION Q3Mesh_GetComponentNumVertices(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numVertices: UInt32): TQ3Status; C;
  490. FUNCTION Q3Mesh_GetComponentNumEdges(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numEdges: UInt32): TQ3Status; C;
  491. FUNCTION Q3Mesh_GetComponentBoundingBox(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR boundingBox: TQ3BoundingBox): TQ3Status; C;
  492. FUNCTION Q3Mesh_GetComponentOrientable(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR orientable: TQ3Boolean): TQ3Status; C;
  493. {
  494.  * Vertex
  495.  }
  496. FUNCTION Q3Mesh_GetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR coordinates: TQ3Point3D): TQ3Status; C;
  497. FUNCTION Q3Mesh_GetVertexIndex(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR index: UInt32): TQ3Status; C;
  498. FUNCTION Q3Mesh_GetVertexOnBoundary(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  499. FUNCTION Q3Mesh_GetVertexComponent(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR component: TQ3MeshComponent): TQ3Status; C;
  500. FUNCTION Q3Mesh_GetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  501.  
  502. FUNCTION Q3Mesh_SetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; {CONST}VAR coordinates: TQ3Point3D): TQ3Status; C;
  503. FUNCTION Q3Mesh_SetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3Status; C;
  504.  
  505. {
  506.  * Face
  507.  }
  508. FUNCTION Q3Mesh_GetFaceNumVertices(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numVertices: UInt32): TQ3Status; C;
  509. FUNCTION Q3Mesh_GetFacePlaneEquation(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR planeEquation: TQ3PlaneEquation): TQ3Status; C;
  510. FUNCTION Q3Mesh_GetFaceNumContours(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numContours: UInt32): TQ3Status; C;
  511. FUNCTION Q3Mesh_GetFaceIndex(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR index: UInt32): TQ3Status; C;
  512. FUNCTION Q3Mesh_GetFaceComponent(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR component: TQ3MeshComponent): TQ3Status; C;
  513. FUNCTION Q3Mesh_GetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  514.  
  515. FUNCTION Q3Mesh_SetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  516. {
  517.  * Edge
  518.  }
  519. FUNCTION Q3Mesh_GetEdgeVertices(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR vertex1: TQ3MeshVertex; VAR vertex2: TQ3MeshVertex): TQ3Status; C;
  520. FUNCTION Q3Mesh_GetEdgeFaces(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR face1: TQ3MeshFace; VAR face2: TQ3MeshFace): TQ3Status; C;
  521. FUNCTION Q3Mesh_GetEdgeOnBoundary(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  522. FUNCTION Q3Mesh_GetEdgeComponent(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR component: TQ3MeshComponent): TQ3Status; C;
  523. FUNCTION Q3Mesh_GetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  524.  
  525. FUNCTION Q3Mesh_SetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; attributeSet: TQ3AttributeSet): TQ3Status; C;
  526. {
  527.  * Contour
  528.  }
  529. FUNCTION Q3Mesh_GetContourFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR face: TQ3MeshFace): TQ3Status; C;
  530. FUNCTION Q3Mesh_GetContourNumVertices(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR numVertices: UInt32): TQ3Status; C;
  531. {
  532.  * Corner
  533.  }
  534. FUNCTION Q3Mesh_GetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  535. FUNCTION Q3Mesh_SetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  536.  
  537. {
  538.  * Public Mesh Iterators
  539.  }
  540.  
  541. TYPE
  542.     TQ3MeshIteratorPtr = ^TQ3MeshIterator;
  543.     TQ3MeshIterator = RECORD
  544.         var1:                    Ptr;
  545.         var2:                    Ptr;
  546.         var3:                    Ptr;
  547.         field1:                    Ptr;
  548.         field2:                    PACKED ARRAY [0..3] OF CHAR;
  549.     END;
  550.  
  551. FUNCTION Q3Mesh_FirstMeshComponent(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  552. FUNCTION Q3Mesh_NextMeshComponent(VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  553. FUNCTION Q3Mesh_FirstComponentVertex(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  554. FUNCTION Q3Mesh_NextComponentVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  555. FUNCTION Q3Mesh_FirstComponentEdge(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  556. FUNCTION Q3Mesh_NextComponentEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  557. FUNCTION Q3Mesh_FirstMeshVertex(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  558. FUNCTION Q3Mesh_NextMeshVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  559. FUNCTION Q3Mesh_FirstMeshFace(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  560. FUNCTION Q3Mesh_NextMeshFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  561. FUNCTION Q3Mesh_FirstMeshEdge(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  562. FUNCTION Q3Mesh_NextMeshEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  563. FUNCTION Q3Mesh_FirstVertexEdge(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  564. FUNCTION Q3Mesh_NextVertexEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  565. FUNCTION Q3Mesh_FirstVertexVertex(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  566. FUNCTION Q3Mesh_NextVertexVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  567. FUNCTION Q3Mesh_FirstVertexFace(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  568. FUNCTION Q3Mesh_NextVertexFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  569. FUNCTION Q3Mesh_FirstFaceEdge(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  570. FUNCTION Q3Mesh_NextFaceEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  571. FUNCTION Q3Mesh_FirstFaceVertex(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  572. FUNCTION Q3Mesh_NextFaceVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  573. FUNCTION Q3Mesh_FirstFaceFace(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  574. FUNCTION Q3Mesh_NextFaceFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  575. FUNCTION Q3Mesh_FirstFaceContour(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  576. FUNCTION Q3Mesh_NextFaceContour(VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  577. FUNCTION Q3Mesh_FirstContourEdge(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  578. FUNCTION Q3Mesh_NextContourEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  579. FUNCTION Q3Mesh_FirstContourVertex(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  580. FUNCTION Q3Mesh_NextContourVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  581. FUNCTION Q3Mesh_FirstContourFace(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  582. FUNCTION Q3Mesh_NextContourFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  583.  
  584.  
  585. {*****************************************************************************
  586.  **                                                                             **
  587.  **                            Maximum order for NURB Curves                     **
  588.  **                                                                             **
  589.  ****************************************************************************}
  590.  
  591. {*****************************************************************************
  592.  **                                                                             **
  593.  **                        NURB Data Structure Definitions                         **
  594.  **                                                                             **
  595.  ****************************************************************************}
  596.  
  597. TYPE
  598.     TQ3NURBCurveDataPtr = ^TQ3NURBCurveData;
  599.     TQ3NURBCurveData = RECORD
  600.         order:                    UInt32;
  601.         numPoints:                UInt32;
  602.         controlPoints:            TQ3RationalPoint4DPtr;
  603.         knots:                    ^Single;
  604.         curveAttributeSet:        TQ3AttributeSet;
  605.     END;
  606.  
  607. {*****************************************************************************
  608.  **                                                                             **
  609.  **                                NURB Curve Routines                             **
  610.  **                                                                             **
  611.  ****************************************************************************}
  612. FUNCTION Q3NURBCurve_New({CONST}VAR curveData: TQ3NURBCurveData): TQ3GeometryObject; C;
  613. FUNCTION Q3NURBCurve_Submit({CONST}VAR curveData: TQ3NURBCurveData; view: TQ3ViewObject): TQ3Status; C;
  614. FUNCTION Q3NURBCurve_SetData(curve: TQ3GeometryObject; {CONST}VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  615. FUNCTION Q3NURBCurve_GetData(curve: TQ3GeometryObject; VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  616. FUNCTION Q3NURBCurve_EmptyData(VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  617. FUNCTION Q3NURBCurve_SetControlPoint(curve: TQ3GeometryObject; pointIndex: UInt32; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  618. FUNCTION Q3NURBCurve_GetControlPoint(curve: TQ3GeometryObject; pointIndex: UInt32; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  619. FUNCTION Q3NURBCurve_SetKnot(curve: TQ3GeometryObject; knotIndex: UInt32; knotValue: Single): TQ3Status; C;
  620. FUNCTION Q3NURBCurve_GetKnot(curve: TQ3GeometryObject; knotIndex: UInt32; VAR knotValue: Single): TQ3Status; C;
  621.  
  622. {*****************************************************************************
  623.  **                                                                             **
  624.  **                            Maximum NURB Patch Order                         **
  625.  **                                                                             **
  626.  ****************************************************************************}
  627. {*****************************************************************************
  628.  **                                                                             **
  629.  **                        NURB Patch Data Structure Definitions                 **
  630.  **                                                                             **
  631.  ****************************************************************************}
  632.  
  633. TYPE
  634.     TQ3NURBPatchTrimCurveDataPtr = ^TQ3NURBPatchTrimCurveData;
  635.     TQ3NURBPatchTrimCurveData = RECORD
  636.         order:                    UInt32;
  637.         numPoints:                UInt32;
  638.         controlPoints:            TQ3RationalPoint3DPtr;
  639.         knots:                    ^Single;
  640.     END;
  641.  
  642.     TQ3NURBPatchTrimLoopDataPtr = ^TQ3NURBPatchTrimLoopData;
  643.     TQ3NURBPatchTrimLoopData = RECORD
  644.         numTrimCurves:            UInt32;
  645.         trimCurves:                TQ3NURBPatchTrimCurveDataPtr;
  646.     END;
  647.  
  648.     TQ3NURBPatchDataPtr = ^TQ3NURBPatchData;
  649.     TQ3NURBPatchData = RECORD
  650.         uOrder:                    UInt32;
  651.         vOrder:                    UInt32;
  652.         numRows:                UInt32;
  653.         numColumns:                UInt32;
  654.         controlPoints:            TQ3RationalPoint4DPtr;
  655.         uKnots:                    ^Single;
  656.         vKnots:                    ^Single;
  657.         numTrimLoops:            UInt32;
  658.         trimLoops:                TQ3NURBPatchTrimLoopDataPtr;
  659.         patchAttributeSet:        TQ3AttributeSet;
  660.     END;
  661.  
  662. {*****************************************************************************
  663.  **                                                                             **
  664.  **                                NURB Patch Routines                             **
  665.  **                                                                             **
  666.  ****************************************************************************}
  667. FUNCTION Q3NURBPatch_New({CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3GeometryObject; C;
  668. FUNCTION Q3NURBPatch_Submit({CONST}VAR nurbPatchData: TQ3NURBPatchData; view: TQ3ViewObject): TQ3Status; C;
  669. FUNCTION Q3NURBPatch_SetData(nurbPatch: TQ3GeometryObject; {CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  670. FUNCTION Q3NURBPatch_GetData(nurbPatch: TQ3GeometryObject; VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  671. FUNCTION Q3NURBPatch_SetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  672. FUNCTION Q3NURBPatch_GetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  673. FUNCTION Q3NURBPatch_SetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; knotValue: Single): TQ3Status; C;
  674. FUNCTION Q3NURBPatch_SetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; knotValue: Single): TQ3Status; C;
  675. FUNCTION Q3NURBPatch_GetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; VAR knotValue: Single): TQ3Status; C;
  676. FUNCTION Q3NURBPatch_GetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; VAR knotValue: Single): TQ3Status; C;
  677. FUNCTION Q3NURBPatch_EmptyData(VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  678.  
  679.  
  680.  
  681. {*****************************************************************************
  682.  **                                                                             **
  683.  **                        Pixmap Marker Data Structure Definitions             **
  684.  **                                                                             **
  685.  ****************************************************************************}
  686.  
  687. TYPE
  688.     TQ3PixmapMarkerDataPtr = ^TQ3PixmapMarkerData;
  689.     TQ3PixmapMarkerData = RECORD
  690.         position:                TQ3Point3D;
  691.         xOffset:                LONGINT;
  692.         yOffset:                LONGINT;
  693.         pixmap:                    TQ3StoragePixmap;
  694.         pixmapMarkerAttributeSet: TQ3AttributeSet;
  695.     END;
  696.  
  697. {*****************************************************************************
  698.  **                                                                             **
  699.  **                                Pixmap Marker Routines                         **
  700.  **                                                                             **
  701.  ****************************************************************************}
  702. FUNCTION Q3PixmapMarker_New({CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3GeometryObject; C;
  703. FUNCTION Q3PixmapMarker_Submit({CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData; view: TQ3ViewObject): TQ3Status; C;
  704. FUNCTION Q3PixmapMarker_SetData(geometry: TQ3GeometryObject; {CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  705. FUNCTION Q3PixmapMarker_GetData(geometry: TQ3GeometryObject; VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  706. FUNCTION Q3PixmapMarker_EmptyData(VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  707. FUNCTION Q3PixmapMarker_GetPosition(pixmapMarker: TQ3GeometryObject; VAR position: TQ3Point3D): TQ3Status; C;
  708. FUNCTION Q3PixmapMarker_SetPosition(pixmapMarker: TQ3GeometryObject; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  709. FUNCTION Q3PixmapMarker_GetXOffset(pixmapMarker: TQ3GeometryObject; VAR xOffset: LONGINT): TQ3Status; C;
  710. FUNCTION Q3PixmapMarker_SetXOffset(pixmapMarker: TQ3GeometryObject; xOffset: LONGINT): TQ3Status; C;
  711. FUNCTION Q3PixmapMarker_GetYOffset(pixmapMarker: TQ3GeometryObject; VAR yOffset: LONGINT): TQ3Status; C;
  712. FUNCTION Q3PixmapMarker_SetYOffset(pixmapMarker: TQ3GeometryObject; yOffset: LONGINT): TQ3Status; C;
  713. FUNCTION Q3PixmapMarker_GetPixmap(pixmapMarker: TQ3GeometryObject; VAR pixmap: TQ3StoragePixmap): TQ3Status; C;
  714. FUNCTION Q3PixmapMarker_SetPixmap(pixmapMarker: TQ3GeometryObject; {CONST}VAR pixmap: TQ3StoragePixmap): TQ3Status; C;
  715.  
  716.  
  717.  
  718. {*****************************************************************************
  719.  **                                                                             **
  720.  **                        Point Data Structure Definitions                     **
  721.  **                                                                             **
  722.  ****************************************************************************}
  723.  
  724. TYPE
  725.     TQ3PointDataPtr = ^TQ3PointData;
  726.     TQ3PointData = RECORD
  727.         point:                    TQ3Point3D;
  728.         pointAttributeSet:        TQ3AttributeSet;
  729.     END;
  730.  
  731. {*****************************************************************************
  732.  **                                                                             **
  733.  **                                Point Routines                                 **
  734.  **                                                                             **
  735.  ****************************************************************************}
  736. FUNCTION Q3Point_New({CONST}VAR pointData: TQ3PointData): TQ3GeometryObject; C;
  737. FUNCTION Q3Point_Submit({CONST}VAR pointData: TQ3PointData; view: TQ3ViewObject): TQ3Status; C;
  738. FUNCTION Q3Point_GetData(point: TQ3GeometryObject; VAR pointData: TQ3PointData): TQ3Status; C;
  739. FUNCTION Q3Point_SetData(point: TQ3GeometryObject; {CONST}VAR pointData: TQ3PointData): TQ3Status; C;
  740. FUNCTION Q3Point_EmptyData(VAR pointData: TQ3PointData): TQ3Status; C;
  741. FUNCTION Q3Point_SetPosition(point: TQ3GeometryObject; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  742. FUNCTION Q3Point_GetPosition(point: TQ3GeometryObject; VAR position: TQ3Point3D): TQ3Status; C;
  743.  
  744.  
  745.  
  746. {*****************************************************************************
  747.  **                                                                             **
  748.  **                        Polygon Data Structure Definitions                     **
  749.  **                                                                             **
  750.  ****************************************************************************}
  751.  
  752. TYPE
  753.     TQ3PolygonDataPtr = ^TQ3PolygonData;
  754.     TQ3PolygonData = RECORD
  755.         numVertices:            UInt32;
  756.         vertices:                TQ3Vertex3DPtr;
  757.         polygonAttributeSet:    TQ3AttributeSet;
  758.     END;
  759.  
  760. {*****************************************************************************
  761.  **                                                                             **
  762.  **                            Polygon Routines                                 **
  763.  **                                                                             **
  764.  ****************************************************************************}
  765. FUNCTION Q3Polygon_New({CONST}VAR polygonData: TQ3PolygonData): TQ3GeometryObject; C;
  766. FUNCTION Q3Polygon_Submit({CONST}VAR polygonData: TQ3PolygonData; view: TQ3ViewObject): TQ3Status; C;
  767. FUNCTION Q3Polygon_SetData(polygon: TQ3GeometryObject; {CONST}VAR polygonData: TQ3PolygonData): TQ3Status; C;
  768. FUNCTION Q3Polygon_GetData(polygon: TQ3GeometryObject; VAR polygonData: TQ3PolygonData): TQ3Status; C;
  769. FUNCTION Q3Polygon_EmptyData(VAR polygonData: TQ3PolygonData): TQ3Status; C;
  770. FUNCTION Q3Polygon_GetVertexPosition(polygon: TQ3GeometryObject; index: UInt32; VAR point: TQ3Point3D): TQ3Status; C;
  771. FUNCTION Q3Polygon_SetVertexPosition(polygon: TQ3GeometryObject; index: UInt32; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  772. FUNCTION Q3Polygon_GetVertexAttributeSet(polygon: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  773. FUNCTION Q3Polygon_SetVertexAttributeSet(polygon: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  774.  
  775.  
  776.  
  777. {*****************************************************************************
  778.  **                                                                             **
  779.  **                        Polyhedron Data Structure Definitions                 **
  780.  **                                                                             **
  781.  ****************************************************************************}
  782.  
  783. TYPE
  784.     TQ3PolyhedronEdgeMasks         = LONGINT;
  785. CONST
  786.     kQ3PolyhedronEdgeNone        = {TQ3PolyhedronEdgeMasks}0;
  787.     kQ3PolyhedronEdge01            = {TQ3PolyhedronEdgeMasks}$01;
  788.     kQ3PolyhedronEdge12            = {TQ3PolyhedronEdgeMasks}$02;
  789.     kQ3PolyhedronEdge20            = {TQ3PolyhedronEdgeMasks}$04;
  790.     kQ3PolyhedronEdgeAll        = {TQ3PolyhedronEdgeMasks}$07;
  791.  
  792.  
  793. TYPE
  794.     TQ3PolyhedronEdge                    = UInt32;
  795.     TQ3PolyhedronEdgeDataPtr = ^TQ3PolyhedronEdgeData;
  796.     TQ3PolyhedronEdgeData = RECORD
  797.         vertexIndices:            ARRAY [0..1] OF UInt32;
  798.         triangleIndices:        ARRAY [0..1] OF UInt32;
  799.         edgeAttributeSet:        TQ3AttributeSet;
  800.     END;
  801.  
  802.     TQ3PolyhedronTriangleDataPtr = ^TQ3PolyhedronTriangleData;
  803.     TQ3PolyhedronTriangleData = RECORD
  804.         vertexIndices:            ARRAY [0..2] OF UInt32;
  805.         edgeFlag:                TQ3PolyhedronEdge;
  806.         triangleAttributeSet:    TQ3AttributeSet;
  807.     END;
  808.  
  809.     TQ3PolyhedronDataPtr = ^TQ3PolyhedronData;
  810.     TQ3PolyhedronData = RECORD
  811.         numVertices:            UInt32;
  812.         vertices:                TQ3Vertex3DPtr;
  813.         numEdges:                UInt32;
  814.         edges:                    TQ3PolyhedronEdgeDataPtr;
  815.         numTriangles:            UInt32;
  816.         triangles:                TQ3PolyhedronTriangleDataPtr;
  817.         polyhedronAttributeSet:    TQ3AttributeSet;
  818.     END;
  819.  
  820. {*****************************************************************************
  821.  **                                                                             **
  822.  **                                Polyhedron Routines                             **
  823.  **                                                                             **
  824.  ****************************************************************************}
  825. FUNCTION Q3Polyhedron_New({CONST}VAR polyhedronData: TQ3PolyhedronData): TQ3GeometryObject; C;
  826. FUNCTION Q3Polyhedron_Submit({CONST}VAR polyhedronData: TQ3PolyhedronData; view: TQ3ViewObject): TQ3Status; C;
  827. FUNCTION Q3Polyhedron_SetData(polyhedron: TQ3GeometryObject; {CONST}VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  828. FUNCTION Q3Polyhedron_GetData(polyhedron: TQ3GeometryObject; VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  829. FUNCTION Q3Polyhedron_EmptyData(VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  830. FUNCTION Q3Polyhedron_SetVertexPosition(polyhedron: TQ3GeometryObject; index: UInt32; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  831. FUNCTION Q3Polyhedron_GetVertexPosition(polyhedron: TQ3GeometryObject; index: UInt32; VAR point: TQ3Point3D): TQ3Status; C;
  832. FUNCTION Q3Polyhedron_SetVertexAttributeSet(polyhedron: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  833. FUNCTION Q3Polyhedron_GetVertexAttributeSet(polyhedron: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  834. FUNCTION Q3Polyhedron_GetTriangleData(polyhedron: TQ3GeometryObject; triangleIndex: UInt32; VAR triangleData: TQ3PolyhedronTriangleData): TQ3Status; C;
  835. FUNCTION Q3Polyhedron_SetTriangleData(polyhedron: TQ3GeometryObject; triangleIndex: UInt32; {CONST}VAR triangleData: TQ3PolyhedronTriangleData): TQ3Status; C;
  836. FUNCTION Q3Polyhedron_GetEdgeData(polyhedron: TQ3GeometryObject; edgeIndex: UInt32; VAR edgeData: TQ3PolyhedronEdgeData): TQ3Status; C;
  837. FUNCTION Q3Polyhedron_SetEdgeData(polyhedron: TQ3GeometryObject; edgeIndex: UInt32; {CONST}VAR edgeData: TQ3PolyhedronEdgeData): TQ3Status; C;
  838.  
  839.  
  840.  
  841. {*****************************************************************************
  842.  **                                                                             **
  843.  **                        PolyLine Data Structure Definitions                     **
  844.  **                                                                             **
  845.  ****************************************************************************}
  846.  
  847. TYPE
  848.     TQ3PolyLineDataPtr = ^TQ3PolyLineData;
  849.     TQ3PolyLineData = RECORD
  850.         numVertices:            UInt32;
  851.         vertices:                TQ3Vertex3DPtr;
  852.         segmentAttributeSet:    TQ3AttributeSetPtr;
  853.         polyLineAttributeSet:    TQ3AttributeSet;
  854.     END;
  855.  
  856. {*****************************************************************************
  857.  **                                                                             **
  858.  **                            PolyLine Routines                                 **
  859.  **                                                                             **
  860.  ****************************************************************************}
  861. FUNCTION Q3PolyLine_New({CONST}VAR polylineData: TQ3PolyLineData): TQ3GeometryObject; C;
  862. FUNCTION Q3PolyLine_Submit({CONST}VAR polyLineData: TQ3PolyLineData; view: TQ3ViewObject): TQ3Status; C;
  863. FUNCTION Q3PolyLine_SetData(polyLine: TQ3GeometryObject; {CONST}VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  864. FUNCTION Q3PolyLine_GetData(polyLine: TQ3GeometryObject; VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  865. FUNCTION Q3PolyLine_EmptyData(VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  866. FUNCTION Q3PolyLine_GetVertexPosition(polyLine: TQ3GeometryObject; index: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  867. FUNCTION Q3PolyLine_SetVertexPosition(polyLine: TQ3GeometryObject; index: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  868. FUNCTION Q3PolyLine_GetVertexAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  869. FUNCTION Q3PolyLine_SetVertexAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  870. FUNCTION Q3PolyLine_GetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  871. FUNCTION Q3PolyLine_SetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  872.  
  873.  
  874.  
  875.  
  876. {*****************************************************************************
  877.  **                                                                             **
  878.  **                        Torus Data Structure Definitions                     **
  879.  **                                                                             **
  880.  ****************************************************************************}
  881.  
  882. TYPE
  883.     TQ3TorusDataPtr = ^TQ3TorusData;
  884.     TQ3TorusData = RECORD
  885.         origin:                    TQ3Point3D;
  886.         orientation:            TQ3Vector3D;
  887.         majorRadius:            TQ3Vector3D;
  888.         minorRadius:            TQ3Vector3D;
  889.         ratio:                    Single;
  890.         uMin:                    Single;
  891.         uMax:                    Single;
  892.         vMin:                    Single;
  893.         vMax:                    Single;
  894.         caps:                    TQ3EndCap;
  895.         interiorAttributeSet:    TQ3AttributeSet;
  896.         torusAttributeSet:        TQ3AttributeSet;
  897.     END;
  898.  
  899. {*****************************************************************************
  900.  **                                                                             **
  901.  **                                Torus Routines                                 **
  902.  **                                                                             **
  903.  ****************************************************************************}
  904. FUNCTION Q3Torus_New({CONST}VAR torusData: TQ3TorusData): TQ3GeometryObject; C;
  905. FUNCTION Q3Torus_Submit({CONST}VAR torusData: TQ3TorusData; view: TQ3ViewObject): TQ3Status; C;
  906. FUNCTION Q3Torus_SetData(torus: TQ3GeometryObject; {CONST}VAR torusData: TQ3TorusData): TQ3Status; C;
  907. FUNCTION Q3Torus_GetData(torus: TQ3GeometryObject; VAR torusData: TQ3TorusData): TQ3Status; C;
  908. FUNCTION Q3Torus_SetOrigin(torus: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  909. FUNCTION Q3Torus_SetOrientation(torus: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  910. FUNCTION Q3Torus_SetMajorRadius(torus: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  911. FUNCTION Q3Torus_SetMinorRadius(torus: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  912. FUNCTION Q3Torus_SetRatio(torus: TQ3GeometryObject; ratio: Single): TQ3Status; C;
  913. FUNCTION Q3Torus_GetOrigin(torus: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  914. FUNCTION Q3Torus_GetOrientation(torus: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  915. FUNCTION Q3Torus_GetMajorRadius(torus: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  916. FUNCTION Q3Torus_GetMinorRadius(torus: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  917. FUNCTION Q3Torus_GetRatio(torus: TQ3GeometryObject; VAR ratio: Single): TQ3Status; C;
  918. FUNCTION Q3Torus_EmptyData(VAR torusData: TQ3TorusData): TQ3Status; C;
  919.  
  920.  
  921.  
  922. {*****************************************************************************
  923.  **                                                                             **
  924.  **                        Triangle Data Structure Definitions                     **
  925.  **                                                                             **
  926.  ****************************************************************************}
  927.  
  928. TYPE
  929.     TQ3TriangleDataPtr = ^TQ3TriangleData;
  930.     TQ3TriangleData = RECORD
  931.         vertices:                ARRAY [0..2] OF TQ3Vertex3D;
  932.         triangleAttributeSet:    TQ3AttributeSet;
  933.     END;
  934.  
  935. {*****************************************************************************
  936.  **                                                                             **
  937.  **                            Triangle Routines                                 **
  938.  **                                                                             **
  939.  ****************************************************************************}
  940. FUNCTION Q3Triangle_New({CONST}VAR triangleData: TQ3TriangleData): TQ3GeometryObject; C;
  941. FUNCTION Q3Triangle_Submit({CONST}VAR triangleData: TQ3TriangleData; view: TQ3ViewObject): TQ3Status; C;
  942. FUNCTION Q3Triangle_SetData(triangle: TQ3GeometryObject; {CONST}VAR triangleData: TQ3TriangleData): TQ3Status; C;
  943. FUNCTION Q3Triangle_GetData(triangle: TQ3GeometryObject; VAR triangleData: TQ3TriangleData): TQ3Status; C;
  944. FUNCTION Q3Triangle_EmptyData(VAR triangleData: TQ3TriangleData): TQ3Status; C;
  945. FUNCTION Q3Triangle_GetVertexPosition(triangle: TQ3GeometryObject; index: UInt32; VAR point: TQ3Point3D): TQ3Status; C;
  946. FUNCTION Q3Triangle_SetVertexPosition(triangle: TQ3GeometryObject; index: UInt32; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  947. FUNCTION Q3Triangle_GetVertexAttributeSet(triangle: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  948. FUNCTION Q3Triangle_SetVertexAttributeSet(triangle: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  949.  
  950.  
  951.  
  952. {*****************************************************************************
  953.  **                                                                             **
  954.  **                        TriGrid Data Structure Definitions                     **
  955.  **                                                                             **
  956.  ****************************************************************************}
  957.  
  958. TYPE
  959.     TQ3TriGridDataPtr = ^TQ3TriGridData;
  960.     TQ3TriGridData = RECORD
  961.         numRows:                UInt32;
  962.         numColumns:                UInt32;
  963.         vertices:                TQ3Vertex3DPtr;
  964.         facetAttributeSet:        TQ3AttributeSetPtr;
  965.         triGridAttributeSet:    TQ3AttributeSet;
  966.     END;
  967.  
  968. {*****************************************************************************
  969.  **                                                                             **
  970.  **                                TriGrid Routines                             **
  971.  **                                                                             **
  972.  ****************************************************************************}
  973. FUNCTION Q3TriGrid_New({CONST}VAR triGridData: TQ3TriGridData): TQ3GeometryObject; C;
  974. FUNCTION Q3TriGrid_Submit({CONST}VAR triGridData: TQ3TriGridData; view: TQ3ViewObject): TQ3Status; C;
  975. FUNCTION Q3TriGrid_SetData(triGrid: TQ3GeometryObject; {CONST}VAR triGridData: TQ3TriGridData): TQ3Status; C;
  976. FUNCTION Q3TriGrid_GetData(triGrid: TQ3GeometryObject; VAR triGridData: TQ3TriGridData): TQ3Status; C;
  977. FUNCTION Q3TriGrid_EmptyData(VAR triGridData: TQ3TriGridData): TQ3Status; C;
  978. FUNCTION Q3TriGrid_GetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  979. FUNCTION Q3TriGrid_SetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  980. FUNCTION Q3TriGrid_GetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  981. FUNCTION Q3TriGrid_SetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  982. FUNCTION Q3TriGrid_GetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: UInt32; VAR facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  983. FUNCTION Q3TriGrid_SetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: UInt32; facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  984.  
  985.  
  986.  
  987. {*****************************************************************************
  988.  **                                                                             **
  989.  **                        TriMesh Data Structure Definitions                     **
  990.  **                                                                             **
  991.  ****************************************************************************}
  992.  
  993. TYPE
  994.     TQ3TriMeshTriangleDataPtr = ^TQ3TriMeshTriangleData;
  995.     TQ3TriMeshTriangleData = RECORD
  996.         pointIndices:            ARRAY [0..2] OF UInt32;
  997.     END;
  998.  
  999.     TQ3TriMeshEdgeDataPtr = ^TQ3TriMeshEdgeData;
  1000.     TQ3TriMeshEdgeData = RECORD
  1001.         pointIndices:            ARRAY [0..1] OF UInt32;
  1002.         triangleIndices:        ARRAY [0..1] OF UInt32;
  1003.     END;
  1004.  
  1005.     TQ3TriMeshAttributeDataPtr = ^TQ3TriMeshAttributeData;
  1006.     TQ3TriMeshAttributeData = RECORD
  1007.         attributeType:            TQ3AttributeType;                        {  The type of attribute           }
  1008.         data:                    Ptr;                                    {  Pointer to the contiguous      }
  1009.                                                                         {  attribute data.                  }
  1010.         attributeUseArray:        CStringPtr;                                {  This is only used with custom  }
  1011.                                                                         {  attributes                       }
  1012.     END;
  1013.  
  1014.     TQ3TriMeshDataPtr = ^TQ3TriMeshData;
  1015.     TQ3TriMeshData = RECORD
  1016.         triMeshAttributeSet:    TQ3AttributeSet;
  1017.         numTriangles:            UInt32;
  1018.         triangles:                TQ3TriMeshTriangleDataPtr;
  1019.         numTriangleAttributeTypes: UInt32;
  1020.         triangleAttributeTypes:    TQ3TriMeshAttributeDataPtr;
  1021.         numEdges:                UInt32;
  1022.         edges:                    TQ3TriMeshEdgeDataPtr;
  1023.         numEdgeAttributeTypes:    UInt32;
  1024.         edgeAttributeTypes:        TQ3TriMeshAttributeDataPtr;
  1025.         numPoints:                UInt32;
  1026.         points:                    TQ3Point3DPtr;
  1027.         numVertexAttributeTypes: UInt32;
  1028.         vertexAttributeTypes:    TQ3TriMeshAttributeDataPtr;
  1029.         bBox:                    TQ3BoundingBox;
  1030.     END;
  1031.  
  1032. {*****************************************************************************
  1033.  **                                                                             **
  1034.  **                            TriMesh Routines                                 **
  1035.  **                                                                             **
  1036.  ****************************************************************************}
  1037. FUNCTION Q3TriMesh_New({CONST}VAR triMeshData: TQ3TriMeshData): TQ3GeometryObject; C;
  1038. FUNCTION Q3TriMesh_Submit({CONST}VAR triMeshData: TQ3TriMeshData; view: TQ3ViewObject): TQ3Status; C;
  1039. FUNCTION Q3TriMesh_SetData(triMesh: TQ3GeometryObject; {CONST}VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1040. FUNCTION Q3TriMesh_GetData(triMesh: TQ3GeometryObject; VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1041. FUNCTION Q3TriMesh_EmptyData(VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1042.  
  1043.  
  1044.  
  1045. {$ALIGN RESET}
  1046. {$POP}
  1047.  
  1048. {$SETC UsingIncludes := QD3DGeometryIncludes}
  1049.  
  1050. {$ENDC} {__QD3DGEOMETRY__}
  1051.  
  1052. {$IFC NOT UsingIncludes}
  1053.  END.
  1054. {$ENDC}
  1055.